SAS: Proc PRINT简介 |
您所在的位置:网站首页 › sas 变量排序 › SAS: Proc PRINT简介 |
1. 作用
输出数据集中的观测 2. 语法 语法如下 PROC PRINT ; 也就是可以不加任何参数,最简单的形式即 PROC PRINT; 3. 示例 样本数据采用Sashelp中的数据集Class,原始数据如图1所示: ![]() 默认会输出数据集的全部观测和全部变量,并在最左边加一列Obs列,表示行号(Observation number) 程序如下: proc print data=Sashelp.Class; run;输出如下: ![]() 3.2 只输出部分变量 可以使用var语句来只输出部分变量,比如只输出姓名和身高: proc print data=Sashelp.Class; var Name Height; run;![]() 3.3 只输出部分观测 3.3.1 使用Where语句 可以使用where语句指定一些条件 比较 比如输出年龄大于14岁的(注意这里可以使用gt, lt, eq, ge,le,ne,并且即可以用于数值型,也可以用于比较字符型,比较字符型时,加上单引号) proc print data=Sashelp.Class; where Age gt 14; run;![]()
子集判断 输出年龄为13、14岁的: proc print data=Sashelp.Class; where Age in (13, 14); run;
包含 使用CONTAINS或者?, 输出姓名中包含‘斯’的: proc print data=Sashelp.Class; where Name CONTAINS '斯'; run;![]()
多个条件 可以使用AND或者OR控制多个条件,例如输出年龄大于14岁,并且体重小于120或者身高小于70的 proc print data=Sashelp.Class; where Age gt 14 and (Weight lt 120 or Height lt 70); run;![]() 3.3.2 使用FIRSTOBS和OBS FIRSTOBS和OBS是全局选项,FIRSTOBS表示从第几行开始默认值为1; OBS表示到第几行结束,默认值分别MAX。一旦设置之后,影响整个程序所有的PROC PRINT。 例如只输出10-12行: OPTIONS FIRSTOBS=10; OPTIONS OBS=12; proc print data=Sashelp.Class; run;![]()
当然,也可以在print选项中指定,那么它只影响当前的PRINT: OPTIONS FIRSTOBS=10; OPTIONS OBS=12; proc print data=Sashelp.Class (FIRSTOBS=1 OBS=5); run;![]() 3.4 排序 使用PROC SORT进行排序,其实排序已经超出了PROC PRINT范畴,它会对数据进行原地排序(如果指定了OUT选项,才会将排序后的数据放到OUT指定的数据集中)。 例如根据年龄和身高进行排序,排序后的数据存放到Work.srtdClss中: proc sort data=Sashelp.Class out=Work.srtdClss; by Age Height; run; proc print data=Work.srtdClss; run;![]() 3.5 求和 使用SUM语句来求年龄15岁的人的身高之和、体重之和: proc print data=Sashelp.Class; where age eq 15; SUM Height Weight; run;![]() 3.6 分组 使用BY语句进行分组,按照年龄分组,求每一组人的身高之和、体重之和,只要15岁以上的数据,这里要求已经排好序(如果不排好序,是不会进行真正的分组的): proc print data=Work.srtdClss; VAR age Height Weight; BY age; WHERE age ge 15; SUM Height Weight; run;
![]()
注意,上面的输出中是分了两组的,一组是15岁的,一组是16岁的。输出中表格的Obs列不太好看,可以使用ID语句代替它 proc print data=Work.srtdClss; VAR age Height Weight; BY age; WHERE age ge 15; SUM Height Weight; ID age; run;![]()
上面这个例子中,age列出现了两次,是因为在VAR语句和ID语句中都出现了,可以去掉VAR语句中的age。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |